java使用@BindingResult和@Validated
注意: 当我搜索@valid vs @validated时,我读了几乎所有的stack post,但找不到答案,所以我发布了这篇文章
我很困惑@Validated
在这里做什么。如果inputParms
无效,它会抛出javax.validation.ConstraintViolationException
,甚至不会进入代码内部。但是,如果我用@Valid
替换@Validated
,则不会引发异常,并且bindingResult.hasErrors()
正在捕获它
@RestController
@Validated // what is this doing ??
public class MyRestController{
@PostMapping(value="/my-data",produces= {MediaType.APPLICATION_JSON_UTF8_VALUE})
public ResponseEntity<?> doSomething(@Valid @RequestBody MyInputParam inputParms,BindingResult bindingResult){
if(bindingResult.hasErrors()) {
//do something here
}
}
}
所以如果我使用@Validated
,BindingResult
一点用处都没有?
甚至仅仅是@Validated
与@Valid
的不同之处
# 1 楼答案
见Difference between @Valid and @Validated in Spring
在您的特殊情况下,问题是
@Validated
与@Valid
混合。解决此问题的选项:@Validated
,并使用@Validated
或@Valid
作为参数@Valid
或@Validated